home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / u_man / cat1 / umerge.z / umerge
Encoding:
Text File  |  2002-10-03  |  6.1 KB  |  114 lines

  1. UMERGE(1)                                              Last changed: 1-4-99
  2.  
  3.  
  4. NNAAMMEE
  5.      uummeerrggee - ucode inliner
  6.  
  7. SSYYNNOOPPSSIISS
  8.      uummeerrggee _i_n_p_u_t__f_i_l_e --oo _i_n_l_i_n_e_d__f_i_l_e [--tt _s_y_m__f_i_l_e --ii _c_o_n_t_r_o_l__f_i_l_e
  9.      --ssppaaccee__ttiimmee _v_a_l_u_e --iinnlliinnee__ttoo _v_a_l_u_e] [--vv --nnooiinnlliinnee --iinnlliinnee__aallll
  10.      --nnoo__iinniitt__ttoo__aassss --nnoo__pprroommoottiioonn]
  11.  
  12. IIMMPPLLEEMMEENNTTAATTIIOONN
  13.      IRIX systems
  14.  
  15. DDEESSCCRRIIPPTTIIOONN
  16.      uummeerrggee,, the ucode inliner, reads the input binary ucode file into an
  17.      input ucode buffer.  An output ucode buffer is then allocated.  uummeerrggee
  18.      then makes a pass over the input ucode buffer to collect information
  19.      and build data structures, including the program call graph.  This
  20.      pass also copies all top-level non-procedure ucode to the output
  21.      buffer.  It then analyzes the data structures to decide what to do for
  22.      the output ucode.  Finally, it copies the code from the input buffer
  23.      to the output buffer according to a depth-first, post-order traversal
  24.      of the program call graph.  In this process, procedure bodies are
  25.      conditionally integrated at their points of calls.  When inlining
  26.      procedures, the procedure code is taken from the output buffer.  This
  27.      allows the output of integrating procedure A into B to be used when
  28.      procedure B is later integrated into procedure C.
  29.  
  30.      Apart from the previously described basic functions, uummeerrggee also
  31.      performs additional optimizations.  For FORTRAN programs, it promotes
  32.      reference parameters to value parameters whenever this can safely be
  33.      performed.  When the actual parameter is a constant, it fetches the
  34.      constant value from the INIT ucode and passes the constants directly.
  35.      When the actual parameter is an initialized variable that is never
  36.      written in the whole program, it also looks up the initialized value
  37.      and passes the constant value directly.
  38.  
  39.      uummeerrggee also recognizes initialized variables that are never written
  40.      into and converts the initializations to run-time assignments at the
  41.      beginning of the procedures.  This allows the later global optimizer
  42.      to perform constant propagation, constant folding and dead store
  43.      elimination to further improve the code.
  44.  
  45.      The following options are accepted by uummeerrggee:
  46.  
  47.      --vv      Turns on verbose mode.  In this mode, uummeerrggee will print the
  48.              name of the procedure it is currently copying to the output
  49.              buffer.  It also prints the name of the procedure it is
  50.              inlining at each call site.
  51.  
  52.      --nnooiinnlliinnee
  53.              Suppresses the inlining functionality.  All other
  54.              optimizations are still performed.
  55.  
  56.      --iinnlliinnee__aallll
  57.              Inline all calls in the program.  This option should be used
  58.              with discretion, because it can create tremendous optimization
  59.              overhead in the later optimization phases.
  60.  
  61.      --nnoo__iinniitt__ttoo__aassss
  62.              Turns off uummeerrggee's initialization to run-time assignment
  63.              conversion.
  64.  
  65.      --nnoo__pprroommoottiioonn
  66.              Turns off reference parameter to value parameter promotion.
  67.  
  68.      --tt _s_y_m__f_i_l_e
  69.              Tells uummeerrggee the name of the symbol table file.  This is
  70.              necessary for uummeerrggee to know the names of all the procedures.
  71.  
  72.      --ii _c_o_n_t_r_o_l__f_i_l_e
  73.              Gives direct control over uummeerrggee on the inlining of specific
  74.              procedures.  The control file must be made up of lines that
  75.              start with a ++ or a -- symbol in the first column, followed by
  76.              a procedure name.  The procedures can be listed in arbitrary
  77.              order in the file.  Procedures marked with ++ are always
  78.              inlined, and those marked with -- are never inlined.
  79.  
  80.      --ssppaaccee__ttiimmee _v_a_l_u_e
  81.              Uses the given value for this parameter.  uummeerrggee's inlining
  82.              decision is based on this parameter that represents space/time
  83.              tradeoff.  The default value is 3.0.  This tells uummeerrggee that a
  84.              size increase of three instructions is worthy of each cycle
  85.              reduction in execution time.  In other words, uummeerrggee will
  86.              inline a procedure whenever the inlining causes three or less
  87.              additional instructions in code size for every one cycle
  88.              speedup in execution time.  The value specified in this option
  89.              does not have to be a whole number.
  90.  
  91.      --iinnlliinnee__ttoo _v_a_l_u_e
  92.              The default value of this parameter is 0.  A positive value of
  93.              this parameter requests uummeerrggee to perform additional inlining
  94.              of calls to leaf routines up to the specified level, in
  95.              addition to its automatic decision mechanism.  A value of 1
  96.              will cause all calls to leaf procedures to be inlined.  A
  97.              value of 2 will additionally cause all calls to procedures
  98.              that became leaves due to level 1 inlining to be inlined, etc.
  99.              Under this option, a procedure will become a leaf in the
  100.              inlined output code only if the procedure's maximum distance
  101.              from a leaf in the call graph is less than or equal to the
  102.              value of this parameter.  This option is not affected by the
  103.              --nnooiinnlliinnee option.
  104.  
  105. DDIIAAGGNNOOSSTTIICCSS
  106.      uummeerrggee assumes the input ucode file is error-free.  Otherwise, there
  107.      is no guarantee on its behavior.
  108.  
  109. SSEEEE AALLSSOO
  110.      uuccooddee(1), bbttoouu(1)
  111.  
  112.      This man page is available only online.
  113.  
  114.